package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.ResultMapVO1;
import cn.tedu._04mybatis.pojo.vo.ResultMapVO2;
import cn.tedu._04mybatis.pojo.vo.WeiboVO1;
import cn.tedu._04mybatis.pojo.vo.WeiboVO2;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
//    @Insert("INSERT INTO weibo(id,content,created,user_id) " +
//            "VALUES (#{id},#{content},#{created},#{user_id})")
    int insertWeibo(Weibo weibo);
    /*
         根据微博id删除微博信息
     */
//    @Delete("DELETE FROM weibo WHERE id =#{id}")
    int deleteWeibobyId(Long id);

//    @Update("UPDATE weibo SET content =#{content},created=#{created},user_id=#{user_id} WHERE id=#{id}")
    int updateWeibobyId(Weibo weibo);

//    @Select("SELECT  id,content,created,user_id from weibo WHERE id=#{id}")
    Weibo selectWeibobyId(Long id);

    /**
     * 查询:单条数据部分字段查询
     * 查询指定微博的内容content和发布时间created;
     */
//    @Select("SELECT content,created from weibo WHERE id =#{id}")
    WeiboVO1 selectWeiboVO1byId(Long id);

//    @Select("SELECT id,content FROM weibo WHERE user_id =#{user_id}")
    List<WeiboVO2> selectWeiboVO2ByUSerId(Long user_id);

    /*
        动态删除1:数组的方式
            根据微博ID,删除指定的微博数据
            DELETE FROM weibo WHERE id in (1,3,5)
     */
    int deleteWeiboByIds1(Integer[] ids);
    /*
        动态删除2:集合的方式
     */
    int deleteWeiboByIds2(List<Integer> ids);
    /*
        动态修改
        根据微博ID动态修改微博的相关信息
     */
    int dynamicUpdateWeiboById(Weibo weibo);

    /*
        统计微博表中的表记录的数量
        SELECT COUNT(*) FROM weibo
     */
    int selectCount();

    /*
        11.ResultMap单表:根据微博ID查询微博id,内容,用户id
     */
    ResultMapVO1 selectMap1(Long id);
    /*
        ResultMap多表:查询指定用户的所有微博信息
     */
    ResultMapVO2 selectMap2(Long uid);
}
